#ifndef _atomic_0813_task_definition_service_H_
#define _atomic_0813_task_definition_service_H_

/*------------------------ Include Begin --------------------------*/

// C
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <string>
#include <math.h>
#include <time.h>
#include <ctype.h>

// C++
#include <iostream>
#include <fstream>
#include <chrono>
#include <string>
#include <random>
#include <cmath>
#include <vector>
#include <map>
#include <set>
#include <stdbool.h>
#include <cctype> // for size_t
#include <sstream>

/*------------------------  Include End  -------------------------*/

/*------------------------  Service Info Begin  --------------------------*/
/**
 *
 * @name:     atomic_0813_task_definition_service
 * @chinese_name: 任务定义
 * @description: information atomic_0813_task_definition_service
 * @version: V1.0.0
 * @build_time: 2025-08-13 16:00:00
 * @license: MIT
 * @service_path: atomic_0813_task_definition_service
 *
 * @resource_requirement:
 *         + cpu_architecture: x86_64
 *         + memory: 4GB
 *         + hard_disk: 50GB
 *
 * @developer:
 *      +name: twilight
 *      +email: twilight@atomic_0813_task_definition_service.com
 * @maintainer:
 *      +name: twilight
 *      +email:twilight@atomic_0813_task_definition_service.com
 * @operating_system:
 *      +name:Linux
 *      +v1:5.13.0-117-generic
 *      +v2:5.14.0-117-generic
 *      +name:SylixOS
 *      +v1:1.0.0
 *      +v2:1.0.2
 *
 *
 *
 */
/*------------------------  Service Info End  --------------------------*/

/*------------------------  Return Type Begin  --------------------------*/

#define ATOMIC_SERVICE_SUCCESS 0
#define ATOMIC_SERVICE_FAIL -1
#define ATOMIC_SERVICE_TIMEOUT -2
#define ATOMIC_SERVICE_ERROR -3
#define ATOMIC_SERVICE_NOT_SUPPORT -4
#define ATOMIC_SERVICE_NOT_READY -5
#define ATOMIC_SERVICE_NOT_INIT -6
#define ATOMIC_SERVICE_NOT_START -7
#define ATOMIC_SERVICE_NOT_STOP -8
#define ATOMIC_SERVICE_NOT_RELEASE -9
#define ATOMIC_SERVICE_NOT_DESTROY -10
#define ATOMIC_SERVICE_NOT_CREATE -11
#define ATOMIC_SERVICE_NOT_OPEN -12
#define ATOMIC_SERVICE_NOT_CLOSE -13
#define ATOMIC_SERVICE_NOT_READ -14
#define ATOMIC_SERVICE_NOT_WRITE -15
#define ATOMIC_SERVICE_NOT_SEEK -16
#define ATOMIC_SERVICE_NOT_TELL -17
#define ATOMIC_SERVICE_NOT_SIZE -18
#define ATOMIC_SERVICE_NOT_SEEK_END -19
#define ATOMIC_SERVICE_NOT_SEEK_SET -20
#define ATOMIC_SERVICE_NOT_SEEK_CUR -21
#define ATOMIC_SERVICE_NOT_SEEK_ABS -22

/*------------------------  Return Type End  --------------------------*/

/*------------------------  Message Info Begin  --------------------------*/

// 任务定义输入（平面化结构）
typedef struct {
    // 基础信息
    std::string task_name;              // 任务名称(唯一标识)
    std::string exec_endpoint;          // 执行端点(格式: 服务名/版本/操作)
    std::string creator_id;             // 创建者ID
    
    // 输入参数定义
    std::string input_params;           // 序列化参数定义(JSON格式)
    
    // 依赖配置
    std::string required_services;      // 依赖服务列表(逗号分隔)
    std::string predecessor_tasks;      // 前置任务ID列表(逗号分隔)
    
    // 执行策略
    int max_retries;                    // 最大重试次数
    int exec_timeout;                   // 执行超时(秒)
    std::string retry_policy;           // 重试策略(exponential/linear/fixed)
    
    // 系统参数
    int priority;                       // 任务优先级(1-5)
    std::string resource_constraints;   // 资源约束(JSON格式)
} TaskDefinitionRequest;

// 任务定义输出（平面化结构）
typedef struct {
    // 元数据核心
    std::string validated_blueprint;    // 验证后的任务蓝图(JSON格式)
    
    // 验证状态
    int validation_code;                // 验证结果码(0=成功)
    std::string validation_msg;         // 验证详情
    
    // 依赖检查结果
    std::string available_services;     // 可用服务列表
    std::string missing_services;       // 缺失服务列表
    std::string unmet_preconditions;    // 未满足的前置条件
    
    // 系统信息
    int create_timestamp;              // 创建时间戳(毫秒)
    int estimated_cost;                 // 预估执行成本(资源单位)

    int task_id;                   // 任务 ID
    std::string task_type;         // 任务类型
    int cpu_cores;          // 所需 CPU 核心数
    int memory_mb;          // 所需内存（MB）
    int gpu_count;          // 所需 GPU 数量

    int log_level;       // 日志级别：0-DEBUG,1-INFO,2-WARN,3-ERROR
    std::string content; // 日志内容
    std::string module_name;  // 所属模块
    
} TaskDefinitionResponse;

/*------------------------  Message Info End  --------------------------*/


/*------------------------  Interface Declaration Begin  --------------------------*/

// 任务有效性检验
int defineTask(TaskDefinitionRequest *input, TaskDefinitionResponse *output);

/*------------------------  Interface Declaration End  --------------------------*/


#endif // _atomic_0813_task_definition_service_H_
